package leetcode_900;

/**
 *@author 周杨
 *SpiralMatrixIII_885 以旋转的方式遍历一个二维矩阵 如果超出矩阵 那么选择一个边界点进入矩阵
 *describe:常规遍历 就当做没有走出过矩阵 AC 24%
 *2018年11月10日 下午6:13:19 
 */
public class SpiralMatrixIII_885 {
	public int[][] spiralMatrixIII(int R, int C, int r0, int c0) {
        int[] dr = new int[]{0, 1, 0, -1};
        int[] dc = new int[]{1, 0, -1, 0};
        int[][] ans = new int[R*C][2];
        int t = 0;
        ans[t++] = new int[]{r0, c0};
        if (R * C == 1) return ans;
        for (int k = 1; k < 2*(R+C); k += 2)
            for (int i = 0; i < 4; ++i) { 
                int dk = k + (i / 2);
                for (int j = 0; j < dk; ++j) {  
                    r0 += dr[i];
                    c0 += dc[i];
                    if (0 <= r0 && r0 < R && 0 <= c0 && c0 < C) {
                        ans[t++] = new int[]{r0, c0};
                        if (t == R * C) return ans;
                    }
                }
            }
        throw null;
    }
}
